package com.baizhi.stringx;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 生成验证码
 */
public class StringDemo4 {
    public static void main(String[] args) {
        //生成一个6位的验证码，包含数字0-9， 小写字符，大写字符
        /*
           65-A  90
           97-a  122
           48-0   57

           a-z  A-Z 0-9  = 26+26+10 = 62
         */
        char[] arr = new char[62];

        for (int i = 65,j=0; i < 91; i++,j++) {
            arr[j] = (char)i;
        }

        for(int i = 97,j=26;i< 123;i++,j++){
            arr[j] = (char)i;
        }

        for (int i = 48,j=52; i < 58; i++,j++) {
            arr[j] = (char)i;
        }


        System.out.println(Arrays.toString(arr));

        String code = ""; //验证码
        //随机生成6个下标，找到对应的字符拼接到code上
        for (int i = 0; i < 6; i++) {
            //[0,1]*(10+1)
            // [0,10）
            //
            int index = (int)(Math.random()*(arr.length+1));
           //随机生成6个数字， 表示arr的下标， 根据下标取值
            code += arr[index];
        }

        System.out.println("系统生成的验证码code="+code);

        //用户输入验证码，和系统生成的验证码比对，如果一致返回验证码正确，如果不一致返回验证码错误，要求用户可以不用考虑大小写
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入验证码：");
        String inCode = scan.next();

        //将用户输入的和系统生成的都转换成大写（或者都转换成小写）进行比对
        code = code.toLowerCase();
        inCode = inCode.toLowerCase();

        if(code.equals(inCode)){
            System.out.println("验证码正确");
        }else{
            System.out.println("验证码不正确");
        }

    }
}
